package com.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

//能不能采用一种赖加载策略呢？我用的时候，容器在帮我初始化。
//默认值是积极去加载....
@Component
//@Scope(value="prototype")
@Scope(value="singleton")//注意:作用域必须是singleton,否则bean的销毁方法不执行。
@Lazy(value=true)
@Data//junit的应用：自动帮助加载所有的get和set、tostring（）方法
@AllArgsConstructor
@NoArgsConstructor
public class Person {

    private String name;
    private String gender;
    private int age;

    @Resource(name="car2")
    private Car car;

    @Resource(name="cars")
    private List<Car> cars; //一个富豪有多辆车

    @Resource
    private Set<String> address;//一个富豪多个住址

    @Resource
    private Map account; //一个富豪有多个银行账号

    @Resource
    private Properties phoneZone; //键值对，城市-区号

    //bean的初始化方法
    @PostConstruct
    public static void initPerson(){
        System.out.println("initPerson()...");
    }

    //bean的销毁方法
    @PreDestroy
    public static void destroyPerson(){
        System.out.println("destroyPerson()...");
    }



}
